package com.cqut.familiarity.mapper;

import com.cqut.familiarity.entity.Answer;
import com.cqut.familiarity.entity.Questionnaire;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cqut.familiarity.entity.vo.ResultVO;
import com.cqut.familiarity.entity.vo.questionVO.CompletedQuestionVO;
import com.cqut.familiarity.entity.vo.questionVO.IncompletelyQuestionVO;
import com.cqut.familiarity.entity.vo.questionnaireVO.CompletedQuestionaireVO;
import com.cqut.familiarity.entity.vo.questionnaireVO.IncompletelyQuestionnaireVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author atao
 * @since 2021-05-23
 */
@Repository
@Mapper
public interface QuestionnaireMapper extends BaseMapper<Questionnaire> {

    /**
     * 根据标题模糊分页查询未填问卷
     *
     * @param pageIndex
     * @param pageSize
     * @param title
     * @return
     */
    List<IncompletelyQuestionnaireVO> incompletelyPageByTitle(
            @Param("pageIndex") int pageIndex,
            @Param("pageSize") int pageSize,
            @Param("title") String title,
            @Param("id") String id
    );


    /**
     * 根据标题模糊分页查询已填问卷
     *
     * @param pageIndex
     * @param pageSize
     * @param title
     * @return
     */
    List<CompletedQuestionaireVO> completedPageByTitle(
            @Param("pageIndex") int pageIndex,
            @Param("pageSize") int pageSize,
            @Param("title") String title,
            @Param("id") String id
    );


    /**
     * 该问卷是否填写
     * @param user1_id
     * @param user2_id
     * @param questionnaire_id
     * @return
     */
    String isFill(@Param("user1_id") String user1_id,@Param("user2_id") String user2_id,@Param("questionnaire_id") String questionnaire_id);


    /**
     * 根据id查询已完成问卷
     * @param user1_id
     * @param user2_id
     * @param questionnaire_id
     * @return
     */
    CompletedQuestionaireVO completedById(@Param("user1_id") String user1_id,@Param("user2_id") String user2_id,@Param("questionnaire_id") String questionnaire_id);


    /**
     * 根据id查询已未完成问卷
     * @param user1_id
     * @param user2_id
     * @param questionnaire_id
     * @return
     */
    IncompletelyQuestionnaireVO incompletelyById(@Param("user1_id") String user1_id,@Param("user2_id") String user2_id,@Param("questionnaire_id") String questionnaire_id);

    /**
     * 保存问卷填写信息
     * @param answer
     * @return
     */
    int insertAnswer(Answer answer);

    /**
     * 保存问卷计算结果
     * @param user1_id
     * @param user2_id
     * @param questionnaire_id
     * @param result
     * @return
     */
    int saveResult(@Param("user1_id") String user1_id,@Param("user2_id") String user2_id,@Param("questionnaire_id") String questionnaire_id,@Param("result") double result);

    /**
     * 查询问卷填写问题的详情信息
     * @param user1_id
     * @param user2_id
     * @param questionnaire_id
     * @return
     */
    List<CompletedQuestionVO> selectDetailsOfCompelted(@Param("user1_id") String user1_id, @Param("user2_id") String user2_id, @Param("questionnaire_id") String questionnaire_id);


    /**
     * 查询问卷模板详情信息
     * @param questionnaire_id
     * @return
     */
    List<IncompletelyQuestionVO> selectDetailsOfIncompletely(String questionnaire_id);



    /**
     * 查看朋友对自己了解程度的排行榜
     *
     * @param user1_id
     * @return
     */
    List<ResultVO> listAboutMe(String user1_id);


    /**
     * 查看自己对朋友了解程度的排行榜
     *
     * @param user2_id
     * @return
     */
    List<ResultVO> listAboutFriend(String user2_id);


    /**
     * 查看自己对朋友了解程度的排行榜
     *
     * @param user2_id
     * @return
     */
    List<ResultVO> listAboutFriend2(String user2_id);

    /**
     * 查看自己对朋友了解程度的排行榜
     *
     * @param user2_id
     * @return
     */
    List<ResultVO> listAboutFriend22(String user2_id);

}
